home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Hardcore Visual Basic 5.0 (2nd Edition)
/
Hardcore Visual Basic 5.0 - Second Edition (1997)(Microsoft Press).iso
/
Source
/
WinTlb
/
OBJBASE.IDL
< prev
next >
Wrap
Text File
|
1997-04-22
|
18KB
|
500 lines
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1996.
//
// File: objbase.h
//
// Contents: Component object model defintions.
//
//----------------------------------------------------------------------------
#define WINOLEAPI HRESULT WINAPI
#define WINOLEAPI_(type) type WINAPI
//define LISet32(li, v) ((li).HighPart = (v) < 0 ? -1 : 0, (li).LowPart = (v))
//define ULISet32(li, v) ((li).HighPart = 0, (li).LowPart = (v))
//define CLSCTX_INPROC (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER)
// With DCOM, CLSCTX_REMOTE_SERVER can be included
// #if _WIN32_WINNT >= 0x0400
//define CLSCTX_ALL (CLSCTX_INPROC_SERVER| CLSCTX_INPROC_HANDLER| CLSCTX_LOCAL_SERVER| CLSCTX_REMOTE_SERVER)
//define CLSCTX_SERVER (CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER|CLSCTX_REMOTE_SERVER)
// #else
// const DWORD CLSCTX_ALL (CLSCTX_INPROC_SERVER| \
// CLSCTX_INPROC_HANDLER| \
// CLSCTX_LOCAL_SERVER )
//
// const DWORD CLSCTX_SERVER (CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER)
// #endif
// class registration flags; passed to CoRegisterClassObject
typedef enum REGCLS {
REGCLS_SINGLEUSE = 0, // class object only generates one instance
REGCLS_MULTIPLEUSE = 1, // same class object genereates multiple inst.
// and local automatically goes into inproc tbl.
REGCLS_MULTI_SEPARATE = 2 // multiple use, but separate control over each
// context.
} REGCLS;
// here is where we pull in the MIDL generated headers for the interfaces
//typedef interface IRpcStubBuffer IRpcStubBuffer;
//typedef interface IRpcChannelBuffer IRpcChannelBuffer;
// COM initialization flags; passed to CoInitialize.
typedef enum COINIT {
COINIT_MULTITHREADED = 0x0, // OLE calls objects on any thread.
COINIT_APARTMENTTHREADED = 0x2, // Apartment model
COINIT_DISABLE_OLE1DDE = 0x4, // Don't use DDE for Ole1 support.
COINIT_SPEED_OVER_MEMORY = 0x8, // Trade memory for speed.
} COINIT;
typedef struct COSERVERINFO {
DWORD dwSize;
OLECHAR * pszName; // machine name
} COSERVERINFO;
//typedef HRESULT (STDAPICALLTYPE * LPFNGETCLASSOBJECT) (REFCLSID, REFIID, LPVOID *);
typedef long LPFNGETCLASSOBJECT;
//typedef HRESULT (STDAPICALLTYPE * LPFNCANUNLOADNOW)(void);
typedef long LPFNCANUNLOADNOW;
//
// Common typedefs for paramaters used in Storage API's, gleamed from storage.h
// Also contains Storage error codes, which should be moved into the storage
// idl files.
//
[
#ifdef UNICODE
uuid(64675066-3A82-101B-8181-00AA003743D3),
#else
uuid(64674066-3A82-101B-8181-00AA003743D3),
#endif
helpstring("Object Base Function Entries and Constants"),
dllname("OLE32.DLL")
]
module ObjBase {
// interface marshaling definitions
const DWORD MARSHALINTERFACE_MIN = 500; // minimum number of bytes for interface marshl
const DWORD CWCSTORAGENAME = 32;
// Storage instantiation modes
const DWORD STGM_DIRECT = 0x00000000;
const DWORD STGM_TRANSACTED = 0x00010000;
const DWORD STGM_SIMPLE = 0x08000000;
const DWORD STGM_READ = 0x00000000;
const DWORD STGM_WRITE = 0x00000001;
const DWORD STGM_READWRITE = 0x00000002;
const DWORD STGM_SHARE_DENY_NONE = 0x00000040;
const DWORD STGM_SHARE_DENY_READ = 0x00000030;
const DWORD STGM_SHARE_DENY_WRITE = 0x00000020;
const DWORD STGM_SHARE_EXCLUSIVE = 0x00000010;
const DWORD STGM_PRIORITY = 0x00040000;
const DWORD STGM_DELETEONRELEASE = 0x04000000;
// #if (WINVER >= 400)
const DWORD STGM_NOSCRATCH = 0x00100000;
// #endif // WINVER
const DWORD STGM_CREATE = 0x00001000;
const DWORD STGM_CONVERT = 0x00020000;
const DWORD STGM_FAILIFTHERE = 0x00000000;
const DWORD STGM_NOSNAPSHOT = 0x00200000;
// flags for internet asyncronous and layout docfile
const DWORD ASYNC_MODE_COMPATIBILITY = 0x00000001;
const DWORD ASYNC_MODE_DEFAULT = 0x00000000;
const DWORD STGTY_REPEAT = 0x00000100;
const DWORD STG_TOEND = 0xFFFFFFFF;
const DWORD STG_LAYOUT_SEQUENTIAL = 0x00000000;
const DWORD STG_LAYOUT_INTERLEAVED = 0x00000001;
#if 0
//***** STD Object API Prototypes *****
WINOLEAPI_(DWORD) CoBuildVersion( VOID );
// init/uninit
WINOLEAPI CoInitialize(LPVOID pvReserved);
WINOLEAPI CoInitializeEx(LPVOID pvReserved, DWORD dwCoInit);
WINOLEAPI_(void) CoUninitialize(void);
WINOLEAPI CoGetMalloc(DWORD dwMemContext, LPMALLOC FAR* ppMalloc);
WINOLEAPI_(DWORD) CoGetCurrentProcess(void);
WINOLEAPI CoRegisterMallocSpy(LPMALLOCSPY pMallocSpy);
WINOLEAPI CoRevokeMallocSpy(void);
WINOLEAPI CoCreateStandardMalloc(DWORD memctx, IMalloc FAR* FAR* ppMalloc);
#if DBG == 1
WINOLEAPI_(ULONG) DebugCoGetRpcFault( void );
WINOLEAPI_(void) DebugCoSetRpcFault( ULONG );
#endif
// register/revoke/get class objects
WINOLEAPI CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, LPVOID pvReserved,
REFIID riid, LPVOID FAR* ppv);
WINOLEAPI CoRegisterClassObject(REFCLSID rclsid, LPUNKNOWN pUnk,
DWORD dwClsContext, DWORD flags, LPDWORD lpdwRegister);
WINOLEAPI CoRevokeClassObject(DWORD dwRegister);
// marshaling interface pointers
WINOLEAPI CoGetMarshalSizeMax(ULONG *pulSize, REFIID riid, LPUNKNOWN pUnk,
DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags);
WINOLEAPI CoMarshalInterface(LPSTREAM pStm, REFIID riid, LPUNKNOWN pUnk,
DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags);
WINOLEAPI CoUnmarshalInterface(LPSTREAM pStm, REFIID riid, LPVOID FAR* ppv);
WINOLEAPI CoMarshalHresult(LPSTREAM pstm, HRESULT hresult);
WINOLEAPI CoUnmarshalHresult(LPSTREAM pstm, HRESULT FAR * phresult);
WINOLEAPI CoReleaseMarshalData(LPSTREAM pStm);
WINOLEAPI CoDisconnectObject(LPUNKNOWN pUnk, DWORD dwReserved);
WINOLEAPI CoLockObjectExternal(LPUNKNOWN pUnk, BOOL fLock, BOOL fLastUnlockReleases);
WINOLEAPI CoGetStandardMarshal(REFIID riid, LPUNKNOWN pUnk,
DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags,
LPMARSHAL FAR* ppMarshal);
WINOLEAPI_(BOOL) CoIsHandlerConnected(LPUNKNOWN pUnk);
WINOLEAPI_(BOOL) CoHasStrongExternalConnections(LPUNKNOWN pUnk);
// Apartment model inter-thread interface passing helpers
WINOLEAPI CoMarshalInterThreadInterfaceInStream(REFIID riid, LPUNKNOWN pUnk,
LPSTREAM *ppStm);
WINOLEAPI CoGetInterfaceAndReleaseStream(LPSTREAM pStm, REFIID iid,
LPVOID FAR* ppv);
WINOLEAPI CoCreateFreeThreadedMarshaler(LPUNKNOWN punkOuter,
LPUNKNOWN *ppunkMarshal);
// dll loading helpers; keeps track of ref counts and unloads all on exit
WINOLEAPI_(HINSTANCE) CoLoadLibrary(LPOLESTR lpszLibName, BOOL bAutoFree);
WINOLEAPI_(void) CoFreeLibrary(HINSTANCE hInst);
WINOLEAPI_(void) CoFreeAllLibraries(void);
WINOLEAPI_(void) CoFreeUnusedLibraries(void);
// Call Security.
WINOLEAPI CoInitializeSecurity(
PSECURITY_DESCRIPTOR pSecDesc,
LONG cbAuthSvc,
SOLE_AUTHENTICATION_SERVICE *asAuthSvc,
WCHAR *pClientPrincName,
DWORD dwAuthnLevel,
DWORD dwImpLevel,
RPC_AUTH_IDENTITY_HANDLE pAuthInfo,
DWORD dwCapabilities,
void *pReserved );
WINOLEAPI CoQueryAuthenticationServices( DWORD *pcbAuthSvc,
SOLE_AUTHENTICATION_SERVICE **asAuthSvc );
WINOLEAPI CoGetCallContext( REFIID riid, void **ppInterface );
WINOLEAPI CoSwitchCallContext( IUnknown *pNewObject, IUnknown **ppOldObject );
WINOLEAPI CoQueryProxyBlanket(
IUnknown *pProxy,
DWORD *pwAuthnSvc,
DWORD *pAuthzSvc,
OLECHAR **pServerPrincName,
DWORD *pAuthnLevel,
DWORD *pImpLevel,
RPC_AUTH_IDENTITY_HANDLE *pAuthInfo,
DWORD *pCapabilites );
WINOLEAPI CoSetProxyBlanket(
IUnknown *pProxy,
DWORD dwAuthnSvc,
DWORD dwAuthzSvc,
OLECHAR *pServerPrincName,
DWORD dwAuthnLevel,
DWORD dwImpLevel,
RPC_AUTH_IDENTITY_HANDLE pAuthInfo,
DWORD dwCapabilities );
WINOLEAPI CoCopyProxy(
IUnknown *pProxy,
IUnknown **ppCopy );
WINOLEAPI CoQueryClientBlanket(
DWORD *pAuthnSvc,
DWORD *pAuthzSvc,
OLECHAR **pServerPrincName,
DWORD *pAuthnLevel,
DWORD *pImpLevel,
RPC_AUTHZ_HANDLE *pPrivs,
DWORD *pCapabilities );
WINOLEAPI CoImpersonateClient();
WINOLEAPI CoRevertToSelf();
const DWORD COM_RIGHTS_EXECUTE 1
// helper for creating instances
WINOLEAPI CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter,
DWORD dwClsContext, REFIID riid, LPVOID FAR* ppv);
WINOLEAPI CoGetPersistentInstance(
REFIID riid,
DWORD dwCtrl,
DWORD grfMode,
OLECHAR *pwszName,
struct IStorage *pstg,
REFCLSID rclsidOle1,
BOOL * pfOle1Loaded,
void **ppvUnk);
WINOLEAPI CoGetInstanceFromFile(
COSERVERINFO * pServerInfo,
CLSID * pClsid,
IUnknown * punkOuter, // only relevant locally
DWORD dwClsCtx,
DWORD grfMode,
OLECHAR * pwszName,
DWORD dwCount,
MULTI_QI * pResults );
WINOLEAPI CoGetInstanceFromIStorage(
COSERVERINFO * pServerInfo,
CLSID * pClsid,
IUnknown * punkOuter, // only relevant locally
DWORD dwClsCtx,
struct IStorage * pstg,
DWORD dwCount,
MULTI_QI * pResults );
WINOLEAPI CoCreateInstanceEx(
REFCLSID Clsid,
IUnknown * punkOuter, // only relevant locally
DWORD dwClsCtx,
COSERVERINFO * pServerInfo,
DWORD dwCount,
MULTI_QI * pResults );
// other helpers
#endif
[
usesgetlasterror,
entry("StringFromCLSID"),
helpstring(""),
]
WINOLEAPI StringFromCLSID(REFCLSID rclsid,
LPOLESTR * lplpsz);
[
usesgetlasterror,
entry("CLSIDFromString"),
helpstring(""),
]
WINOLEAPI CLSIDFromString(LPOLESTR lpsz, LPCLSID pclsid);
[
usesgetlasterror,
entry("StringFromIID"),
helpstring(""),
]
WINOLEAPI StringFromIID(REFIID rclsid,
LPOLESTR * lplpsz);
[
usesgetlasterror,
entry("IIDFromString"),
helpstring(""),
]
WINOLEAPI IIDFromString(LPOLESTR lpsz,
LPIID lpiid);
/*
[
usesgetlasterror,
entry("CoIsOle1Class"),
helpstring(""),
]
WINOLEAPI_(BOOL) CoIsOle1Class(REFCLSID rclsid);
*/
[
usesgetlasterror,
entry("ProgIDFromCLSID"),
helpstring(""),
]
WINOLEAPI ProgIDFromCLSID(REFCLSID clsid,
LPOLESTR * lplpszProgID);
[
usesgetlasterror,
entry("CLSIDFromProgID"),
helpstring(""),
]
WINOLEAPI CLSIDFromProgID(LPCOLESTR lpszProgID,
LPCLSID lpclsid);
[
usesgetlasterror,
entry("StringFromGUID2"),
helpstring(""),
]
WINOLEAPI_(int) StringFromGUID2(REFGUID rguid,
LPOLESTR lpsz, int cbMax);
[
usesgetlasterror,
entry("CoCreateGuid"),
helpstring(""),
]
WINOLEAPI CoCreateGuid(GUID *pguid);
#if 0
WINOLEAPI_(BOOL) CoFileTimeToDosDateTime(
LPFILETIME lpFileTime, LPWORD lpDosDate, LPWORD lpDosTime);
WINOLEAPI_(BOOL) CoDosDateTimeToFileTime(
WORD nDosDate, WORD nDosTime, LPFILETIME lpFileTime);
WINOLEAPI CoFileTimeNow( LPFILETIME lpFileTime );
WINOLEAPI CoRegisterMessageFilter( LPMESSAGEFILTER lpMessageFilter,
LPMESSAGEFILTER FAR* lplpMessageFilter );
WINOLEAPI CoRegisterChannelHook( REFGUID ExtensionUuid, IChannelHook *pChannelHook );
// TreatAs APIS
WINOLEAPI CoGetTreatAsClass(REFCLSID clsidOld, LPCLSID pClsidNew);
WINOLEAPI CoTreatAsClass(REFCLSID clsidOld, REFCLSID clsidNew);
// the server dlls must define their DllGetClassObject and DllCanUnloadNow
* to match these; the typedefs are located here to ensure all are changed at
* the same time.
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID FAR* ppv);
STDAPI DllCanUnloadNow(void);
//***** Default Memory Allocation *****
WINOLEAPI_(LPVOID) CoTaskMemAlloc(ULONG cb);
WINOLEAPI_(LPVOID) CoTaskMemRealloc(LPVOID pv, ULONG cb);
WINOLEAPI_(void) CoTaskMemFree(LPVOID pv);
//***** DV APIs *******
WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER FAR* ppDAHolder);
WINOLEAPI CreateDataCache(LPUNKNOWN pUnkOuter, REFCLSID rclsid,
REFIID iid, LPVOID FAR* ppv);
//***** Storage API Prototypes ****
WINOLEAPI StgCreateDocfile(const OLECHAR FAR* pwcsName,
DWORD grfMode,
DWORD reserved,
IStorage FAR * FAR *ppstgOpen);
WINOLEAPI StgCreateDocfileOnILockBytes(ILockBytes FAR *plkbyt,
DWORD grfMode,
DWORD reserved,
IStorage FAR * FAR *ppstgOpen);
WINOLEAPI StgOpenStorage(const OLECHAR FAR* pwcsName,
IStorage FAR *pstgPriority,
DWORD grfMode,
SNB snbExclude,
DWORD reserved,
IStorage FAR * FAR *ppstgOpen);
WINOLEAPI StgOpenStorageOnILockBytes(ILockBytes FAR *plkbyt,
IStorage FAR *pstgPriority,
DWORD grfMode,
SNB snbExclude,
DWORD reserved,
IStorage FAR * FAR *ppstgOpen);
WINOLEAPI StgIsStorageFile(const OLECHAR FAR* pwcsName);
WINOLEAPI StgIsStorageILockBytes(ILockBytes FAR* plkbyt);
WINOLEAPI StgSetTimes(OLECHAR lpszName,
LPFILETIME pctime,
LPFILETIME patime,
LPFILETIME pmtime);
WINOLEAPI StgOpenAsyncDocfileOnIFillLockBytes( IFillLockBytes *pflb,
DWORD grfMode,
DWORD asyncFlags,
IStorage **ppstgOpen);
WINOLEAPI StgGetIFillLockBytesOnILockBytes( ILockBytes *pilb,
IFillLockBytes **ppflb);
WINOLEAPI StgGetIFillLockBytesOnFile(OLECHAR const *pwcsName,
IFillLockBytes **ppflb);
WINOLEAPI StgOpenLayoutDocfile(OLECHAR const *pwcsDfName,
DWORD grfMode,
DWORD reserved,
IStorage **ppstgOpen);
//
// Moniker APIs
//
WINOLEAPI BindMoniker(LPMONIKER pmk, DWORD grfOpt, REFIID iidResult, LPVOID FAR* ppvResult);
WINOLEAPI CoGetObject(LPCWSTR pszName, BIND_OPTS *pBindOptions, REFIID riid, void **ppv);
WINOLEAPI MkParseDisplayName(LPBC pbc, LPCOLESTR szUserName,
ULONG FAR * pchEaten, LPMONIKER FAR * ppmk);
WINOLEAPI MonikerRelativePathTo(LPMONIKER pmkSrc, LPMONIKER pmkDest, LPMONIKER
FAR* ppmkRelPath, BOOL dwReserved);
WINOLEAPI MonikerCommonPrefixWith(LPMONIKER pmkThis, LPMONIKER pmkOther,
LPMONIKER FAR* ppmkCommon);
WINOLEAPI CreateBindCtx(DWORD reserved, LPBC FAR* ppbc);
WINOLEAPI CreateGenericComposite(LPMONIKER pmkFirst, LPMONIKER pmkRest,
LPMONIKER FAR* ppmkComposite);
WINOLEAPI GetClassFile (LPCOLESTR szFilename, CLSID FAR* pclsid);
WINOLEAPI CreateClassMoniker(REFCLSID rclsid, LPMONIKER FAR* ppmk);
WINOLEAPI CreateFileMoniker(LPCOLESTR lpszPathName, LPMONIKER FAR* ppmk);
WINOLEAPI CreateItemMoniker(LPCOLESTR lpszDelim, LPCOLESTR lpszItem,
LPMONIKER FAR* ppmk);
WINOLEAPI CreateAntiMoniker(LPMONIKER FAR* ppmk);
WINOLEAPI CreatePointerMoniker(LPUNKNOWN punk, LPMONIKER FAR* ppmk);
WINOLEAPI GetRunningObjectTable( DWORD reserved, LPRUNNINGOBJECTTABLE FAR* pprot);
#endif
};